package ejb.metodos;

import com.itextpdf.text.BadElementException;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Chunk;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.FontFactory;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.ColumnText;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
import com.itextpdf.text.pdf.PdfWriter;
import ejb.dao.estagio.Alerta;
import ejb.dao.estagio.AlertaFacadeLocal;
import ejb.dao.estagio.Concedente;
import ejb.dao.estagio.ConcedenteFacadeLocal;
import ejb.dao.estagio.Curso;
import ejb.dao.estagio.CursoFacadeLocal;
import ejb.dao.estagio.Estagio;
import ejb.dao.estagio.EstagioFacadeLocal;
import ejb.dao.relatorios.Avaliacao;
import ejb.dao.relatorios.AvaliacaoEstagiario;
import ejb.dao.relatorios.AvaliacaoEstagiarioFacadeLocal;
import ejb.dao.relatorios.AvaliacaoSupervisor;
import ejb.dao.relatorios.AvaliacaoSupervisorFacadeLocal;
import ejb.dao.relatorios.FichaFrequencia;
import ejb.dao.relatorios.FichaFrequenciaFacadeLocal;
import ejb.dao.relatorios.RelatorioAtividades;
import ejb.dao.relatorios.RelatorioAtividadesFacadeLocal;
import ejb.dao.usuarios.EstagiarioFacadeLocal;
import ejb.dao.usuarios.Estagiario;
import ejb.dao.usuarios.Orientador;
import ejb.dao.usuarios.OrientadorFacadeLocal;
import ejb.dao.usuarios.Supervisor;
import ejb.dao.usuarios.SupervisorFacadeLocal;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.ejb.SessionContext;
import javax.ejb.Stateless;
import javax.ejb.Timeout;
import javax.ejb.Timer;
import javax.mail.MessagingException;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import mail.MailJava;
import mail.MailJavaSender;

/**
 *
 * @author Gomes
 */
@Stateless(mappedName = "SessionBeanEJB")
public class SessionBean implements SessionBeanLocal {

    @EJB(mappedName = "EstagiarioFacadeEJB")
    private EstagiarioFacadeLocal estagiarioBean;
    @EJB(mappedName = "OrientadorFacadeEJB")
    private OrientadorFacadeLocal orientadorBean;
    @EJB(mappedName = "SupervidorFacadeEJB")
    private SupervisorFacadeLocal supervisorBean;
    @EJB(mappedName = "EstagioFacadeEJB")
    private EstagioFacadeLocal estagioBean;
    @EJB(mappedName = "AlertaFacadeEJB")
    private AlertaFacadeLocal alertaBean;
    @EJB(mappedName = "FichaFrequenciaFacadeEJB")
    private FichaFrequenciaFacadeLocal fichaFrequenciaBean;
    @EJB(mappedName = "RelatorioAtividadesFacadeEJB")
    private RelatorioAtividadesFacadeLocal relatorioAtividadesBean;
    @EJB(mappedName = "AvaliacaoEstagiarioFacadeEJB")
    private AvaliacaoEstagiarioFacadeLocal avaliacaoEstagiarioBean;
    @EJB(mappedName = "AvaliacaoSupervisorFacadeEJB")
    private AvaliacaoSupervisorFacadeLocal avaliacaoSupervisorBean;
    @EJB(mappedName = "ConcedenteFacadeEJB")
    private ConcedenteFacadeLocal concedenteBean;
    @EJB(mappedName = "CursoFacadeEJB")
    private CursoFacadeLocal cursoBean;
    @PersistenceContext(unitName = "Sigef-ejbPU")
    private EntityManager em;
    private String caminho = "C:\\Users\\pedro\\Documents\\NetBeansProjects\\Sigef\\Sigef-war\\web\\files\\";
    @Resource
    private SessionContext ctx;
    private boolean servicoEnviarEmail = true;//se está ativo o servico de enviar emails
    private int duracaoIntervalo = 60;//de quanto em quanto tempo (em segundos) o servico eh checado

    @Override
    public boolean cadastrarEstagiario(String login, String senha, String nome, Curso curso, String unidadeSetorial, int semestre, String rga, String cpf, String rg, String orgaoExpedidor, String nacionalidade, String rua, int nRua, String bairro, String cep, String cidade, String uf, String telefone, String telefoneRecado, String email, Estagio estagio) {
        Estagiario novoEstagiario = new Estagiario(login, senha, nome, curso, unidadeSetorial, semestre, rga, cpf, rg, orgaoExpedidor, nacionalidade, rua, nRua, bairro, cep, cidade, uf, telefone, telefoneRecado, email, null);
        if (estagiarioBean.findLogin(novoEstagiario.getLogin()) == null) {
            estagiarioBean.create(novoEstagiario);
            return true;
        } else {
            return false;
        }
    }

    @Override
    public boolean cadastrarOrientador(String login, String senha, String nome, Curso curso) {
        Orientador novoOrientador = new Orientador(login, senha, nome, curso);
        if (orientadorBean.findLogin(novoOrientador.getLogin()) == null) {
            orientadorBean.create(novoOrientador);
            return true;
        } else {
            return false;
        }
    }

    @Override
    public boolean cadastrarSupervisor(String login, String senha, String nome, String cargo, String formacao) {
        Supervisor novoSupervisor = new Supervisor(login, senha, nome, cargo, formacao);
        if (supervisorBean.findLogin(novoSupervisor.getLogin()) == null) {
            supervisorBean.create(novoSupervisor);
            return true;
        } else {
            return false;
        }
    }

    @Override
    public boolean cadastrarEstagio(String loginEstagiario, boolean isObrigatorio, double valorBolsa, double valorAuxilioTransporte, String nApoliceSeguro, String empresaApoliceSeguro, String tema, String area, double cargaHorariaDiaria, double cargaHorariaSemanal, double cargaHorariaTotalPrevista, String inicioPrevisto, String terminoPrevisto, String justificativa, String objetivo, String metodologia, Concedente concedente, Orientador orientador, Supervisor supervisor, String cronograma, String horarioEstagio) {
        Estagiario estagiario = estagiarioBean.findLogin(loginEstagiario);
        Estagio estagio = new Estagio(isObrigatorio, valorBolsa, valorAuxilioTransporte, nApoliceSeguro, empresaApoliceSeguro, tema, area, cargaHorariaDiaria, cargaHorariaSemanal, cargaHorariaTotalPrevista, inicioPrevisto, terminoPrevisto, justificativa, objetivo, metodologia, concedente, orientador, supervisor, cronograma, horarioEstagio, estagiario);
        estagioBean.create(estagio);
        estagiario.setEstagio(estagio);
        estagiarioBean.edit(estagiario);
        return true;
    }

    public boolean updateEstagio(Estagio velhoEstagio, boolean isObrigatorio, double valorBolsa, double valorAuxilioTransporte, String nApoliceSeguro, String empresaApoliceSeguro, String tema, String area, double cargaHorariaDiaria, double cargaHorariaSemanal, double cargaHorariaTotalPrevista, String inicioPrevisto, String terminoPrevisto, String justificativa, String objetivo, String metodologia, Concedente concedente, Orientador orientador, Supervisor supervisor, String cronograma, String horarioEstagio) {


        Estagio estagioAtualizado = new Estagio(isObrigatorio, valorBolsa, valorAuxilioTransporte, nApoliceSeguro, empresaApoliceSeguro, tema, area, cargaHorariaDiaria, cargaHorariaSemanal, cargaHorariaTotalPrevista, inicioPrevisto, terminoPrevisto, justificativa, objetivo, metodologia, concedente, orientador, supervisor, cronograma, horarioEstagio, velhoEstagio.getEstagiario());
        estagioAtualizado.setId(velhoEstagio.getId());

        estagioBean.edit(estagioAtualizado);
        return true;
    }

    @Override
    public boolean criarAlerta(String dataAlerta, String descricao) throws ParseException {
        Date dtAlerta = new SimpleDateFormat("dd/MM/yyyy").parse(dataAlerta);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(dtAlerta);
        calendar.set(Calendar.HOUR_OF_DAY, 23);
        calendar.set(Calendar.MINUTE, 59);
        calendar.set(Calendar.SECOND, 59);
        Alerta novoAlerta = new Alerta(calendar.getTime(), descricao);
        alertaBean.create(novoAlerta);
        return true;
    }

    @Override
    public boolean salvarFichaFrequenica(String loginEstagiario, List<FichaFrequencia> fichaFrequencia) {
        Estagio estagio = estagiarioBean.findLogin(loginEstagiario).getEstagio();
        for (FichaFrequencia ficha : fichaFrequencia) {
            ficha.setEstagio(estagio);
        }
        estagio.setFichaFrequencia(fichaFrequencia);
        return true;
    }

    @Override
    public boolean salvarRelatorioAtividades(String loginEstagiario, boolean isFinal, String periodoInicio, String periodoFim, double cargaHorariaAcumulada, String atividadesDesenvolvidas, int programaEstagio, String atividadesNaoIncluidasProgramaEstagio, String tarefasNaoContribuiram, String tarefasIndispensaveisNaoFeitas, int realidadeTrabalho, int conhecimentosTeoricos, boolean ambientacaoPessoas, boolean temOrientadorTarefas, String orientadorTarefas, boolean informacoesClaras, boolean informacoesDadas, String aQuemRecorria, int sentirDeficiencias, String dificuldades, boolean trocaExperiencia, int solucoesProprias, boolean trabalhosTeoricosPalestras, String outrasObservacoes) throws ParseException {
        Estagio estagio = estagiarioBean.findLogin(loginEstagiario).getEstagio();
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        Date periodoFimDate = sdf.parse(periodoFim);
        Date periodoInicioDate = sdf.parse(periodoInicio);
        RelatorioAtividades relatorioAtividades = new RelatorioAtividades(isFinal, periodoInicioDate, periodoFimDate, cargaHorariaAcumulada, atividadesDesenvolvidas, programaEstagio, atividadesNaoIncluidasProgramaEstagio, tarefasNaoContribuiram, tarefasIndispensaveisNaoFeitas, realidadeTrabalho, conhecimentosTeoricos, ambientacaoPessoas, temOrientadorTarefas, orientadorTarefas, informacoesClaras, informacoesDadas, aQuemRecorria, sentirDeficiencias, dificuldades, trocaExperiencia, solucoesProprias, trabalhosTeoricosPalestras, outrasObservacoes);
        relatorioAtividadesBean.create(relatorioAtividades);
        estagio.setRelatorioAtividades(relatorioAtividades);
        return true;
    }

    @Override
    public boolean salvarAvaliacaoEstagiario(String loginEstagiario, int ai1, int ai2, int ai3, int ai4, int ap1, int ap2, int ap3, int ap4, int ap5, int ap6, int atp1, int atp2, int atp3, int atp4, int atp5, int atp6, String aproveitamento, String contribuicao, String sugestoes) {
        Estagio estagio = estagiarioBean.findLogin(loginEstagiario).getEstagio();
        int resultado1 = ai1 + ai2 + ai3 + ai4;
        int resultado2 = ap1 + ap2 + ap3 + ap4 + ap5 + ap6;
        int resultado3 = atp1 + atp2 + atp3 + atp4 + atp5 + atp6;
        int total = resultado1 * 2 + resultado2 * 3 + resultado3 * 5;
        AvaliacaoEstagiario avaliacaoEstagiario = new AvaliacaoEstagiario(ai1, ai1, ai3, ai4, ap1, ap2, ap3, ap4, ap5, ap6, atp1, atp2, atp3, atp4, atp5, atp6, aproveitamento, contribuicao, sugestoes);
        avaliacaoEstagiario.setResultado1(resultado1);
        avaliacaoEstagiario.setResultado2(resultado2);
        avaliacaoEstagiario.setResultado3(resultado3);
        avaliacaoEstagiario.setTotalGeral(total);
        try {

            avaliacaoEstagiarioBean.create(avaliacaoEstagiario);
            estagio.setAvaliacaoEstagiario(avaliacaoEstagiario);
        } catch (Exception e) {
            System.err.println(e);
            return false;
        }
        return true;
    }

    @Override
    public boolean salvarAvaliacaoSupervisor(String loginEstagiario, int ai1, int ai2, int ai3, int ai4, int ap1, int ap2, int ap3, int ap4, int ap5, int ap6, int atp1, int atp2, int atp3, int atp4, int atp5, int atp6, String prosseguimento, String outrosEstagiarios, String sugestoes) {
        AvaliacaoSupervisor avaliacaoSupervisor = new AvaliacaoSupervisor(ai1, ai1, ai3, ai4, ap1, ap2, ap3, ap4, ap5, ap6, atp1, atp2, atp3, atp4, atp5, atp6, prosseguimento, outrosEstagiarios, sugestoes);
        int resultado1 = ai1 + ai2 + ai3 + ai4;
        int resultado2 = ap1 + ap2 + ap3 + ap4 + ap5 + ap6;
        int resultado3 = atp1 + atp2 + atp3 + atp4 + atp5 + atp6;
        int total = resultado1 * 2 + resultado2 * 3 + resultado3 * 5;
        avaliacaoSupervisor.setResultado1(resultado1);
        avaliacaoSupervisor.setResultado2(resultado2);
        avaliacaoSupervisor.setResultado3(resultado3);
        avaliacaoSupervisor.setTotalGeral(total);
        try {

            avaliacaoSupervisorBean.create(avaliacaoSupervisor);
            Estagio estagio = estagiarioBean.findLogin(loginEstagiario).getEstagio();
            estagio.setAvaliacaoSupervisor(avaliacaoSupervisor);
        } catch (Exception e) {
            System.err.println(e);
            return false;
        }
        return true;
    }

    @Override
    public Estagiario buscarEstagiario(String loginEstagiario) {
        Estagiario estagiario = estagiarioBean.findLogin(loginEstagiario);
        return estagiario;
    }

    @Override
    public Estagiario buscarEstagiario(Long idEstagiario) {
        Estagiario estagiario = estagiarioBean.find(idEstagiario);
        return estagiario;
    }

    @Override
    public Estagio buscarEstagio(String loginEstagiario) {

        Estagiario estagiario = estagiarioBean.findLogin(loginEstagiario);
        Estagio estagio = estagiario.getEstagio();
        return estagio;

    }

    @Override
    public Estagio buscarEstagio(Long idEstagio) {
        Estagio estagio = estagioBean.find(idEstagio);
        return estagio;
    }

    @Override
    public void updateEstagiario(Estagiario estagiario) {
        estagiarioBean.edit(estagiario);
    }

    @Override
    public Orientador buscarOrientador(Long id) {
        Orientador orientador = orientadorBean.find(id);
        return orientador;
    }

    @Override
    public Orientador buscarOrientador(String login) {
        Orientador orientador = orientadorBean.findLogin(login);
        return orientador;
    }

    @Override
    public Concedente cadastrarConcedente(String nome, String pessoa, String cpfCnpj, String rua, String nRua, String bairro, String cidade, String uf, String cep, String telefone, String fax, String email, String representanteLegal) {
        Concedente concedente = new Concedente(nome, pessoa, cpfCnpj, rua, nRua, bairro, cidade, uf, cep, telefone, fax, email, representanteLegal, false);
        concedenteBean.create(concedente);
        concedente = concedenteBean.findCNPJ(cpfCnpj);
        return concedente;
    }

    @Override
    public Supervisor cadastrarSupervisor(String login, String senha, String nome, String telefone, String fax, String email, String cargo, String formacao) {
        Supervisor supervisor = new Supervisor(login, senha, nome, telefone, fax, email, cargo, formacao);
        supervisorBean.create(supervisor);
        supervisor = supervisorBean.findLogin(login);
        return supervisor;
    }

    @Override
    public String login(String login, String senha) {
        Estagiario estagiario = estagiarioBean.findLogin(login);
        if (estagiario != null) {
            if (estagiario.getSenha().equals(senha)) {
                return "Estagiario";
            }
        } else {
            Orientador orientador = orientadorBean.findLogin(login);
            if (orientador != null) {
                if (orientador.getSenha().equals(senha)) {
                    return "Orientador";
                }
            } else {
                Supervisor supervisor = supervisorBean.findLogin(login);
                if (supervisor != null) {
                    if (supervisor.getSenha().equals(senha)) {
                        return "Supervisor";
                    }
                }
            }
        }
        return null;
    }

    @Override
    public RelatorioAtividades buscarRelatorioAtividades(String loginEstagiario) {
        RelatorioAtividades relatorioAtividades = estagiarioBean.findLogin(loginEstagiario).getEstagio().getRelatorioAtividades();
        return relatorioAtividades;
    }

    @Override
    public AvaliacaoSupervisor buscarAvaliacaoSupervisor(String loginEstagiario) {
        AvaliacaoSupervisor avaliacaoSupervisor = estagiarioBean.findLogin(loginEstagiario).getEstagio().getAvaliacaoSupervisor();
        return avaliacaoSupervisor;
    }

    @Override
    public AvaliacaoEstagiario buscarAvaliacaoEstagiario(String loginEstagiario) {
        AvaliacaoEstagiario avaliacaoEstagiario = estagiarioBean.findLogin(loginEstagiario).getEstagio().getAvaliacaoEstagiario();
        return avaliacaoEstagiario;
    }

    @Override
    public List<Curso> listarCursos() {
        return cursoBean.listarCursos();
    }

    @Override
    public boolean cadastrarCurso(String login, String nome, int porcentagem) {
        Orientador orientador = orientadorBean.findLogin(login);
        Curso curso = new Curso(nome, porcentagem);
        cursoBean.create(curso);
        orientador.setCurso(curso);
        orientadorBean.edit(orientador);
        return true;
    }

    @Override
    public List<Orientador> listarOrientadores(Curso curso) {
        return orientadorBean.findporCurso(curso.getId());
    }

    @Override
    public Curso buscarCurso(Long id) {
        return cursoBean.find(id);
    }

    @Override
    public List<Estagiario> listarTodosEstagiarios() {
        return estagiarioBean.findTodosEstagiarios();
    }

    @Override
    public boolean gerarTermoCompromisso(Estagio estagio) throws DocumentException, FileNotFoundException {
        //Instanciação do Objeto do Documento        
        Document document = new Document(PageSize.A4, 50, 50, 90, 50);
        //Criação de Objeto PdfWriter
        PdfWriter writer;
        if (estagio.isIsObrigatorio()) {
            writer = PdfWriter.getInstance(document, new FileOutputStream(caminho + "TermoObrigatorio.pdf"));
        } else {
            writer = PdfWriter.getInstance(document, new FileOutputStream(caminho + "TermoNaoObrigatorio.pdf"));
        }
        HeaderFooter2 event = new HeaderFooter2();
        writer.setPageEvent(event);
        document.open();

        //titulo
        Paragraph paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 9));
        paragrafo.setAlignment(Element.ALIGN_CENTER);
        paragrafo.setSpacingAfter(10);
        Chunk chunk;
        if (estagio.isIsObrigatorio()) {
            chunk = new Chunk("TERMO DE COMPROMISSO DE ESTÁGIO OBRIGATÓRIO", FontFactory.getFont(FontFactory.TIMES_BOLD));
        } else {
            chunk = new Chunk("TERMO DE COMPROMISSO DE ESTÁGIO NÃO-OBRIGATÓRIO", FontFactory.getFont(FontFactory.TIMES_BOLD));
        }
        paragrafo.add(chunk);
        document.add(paragrafo);

        //intro
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 9));
        paragrafo.setSpacingAfter(10);
        chunk = new Chunk("Pelo presente instrumento, firmado nos termo da Lei n. 11.788, de 25 de setembro de 2008 e da Resolução COEG n. 107, de 16 de junho de 2010, as partes identificadas abaixo:");
        paragrafo.add(chunk);

        document.add(paragrafo);

        //estagiario
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 9));
        paragrafo.setSpacingAfter(10);
        chunk = new Chunk("ESTAGIÁRIO", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);

        chunk = new Chunk("\nNome: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getEstagiario().getNome());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("  Curso: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getEstagiario().getCurso().getNome() + '/' + estagio.getEstagiario().getUnidadeSetorial());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("  Semestre: ");
        paragrafo.add(chunk);
        chunk = new Chunk(String.valueOf(estagio.getEstagiario().getSemestre()));
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\nRGA: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getEstagiario().getRga());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("  CPF: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getEstagiario().getCpf());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("  RG: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getEstagiario().getRg());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("  Órgão Expedidor: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getEstagiario().getOrgaoExpedidor());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\nNacionalidade: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getEstagiario().getNacionalidade());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("  Endereço: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getEstagiario().getRua());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("  nº: ");
        paragrafo.add(chunk);
        chunk = new Chunk(String.valueOf(estagio.getEstagiario().getnRua()));
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("  Bairro: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getEstagiario().getBairro());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("  CEP: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getEstagiario().getCep());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\nCidade: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getEstagiario().getCidade());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("  UF: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getEstagiario().getUf());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("  Telefone: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getEstagiario().getTelefone());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("  Recado: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getEstagiario().getTelefoneRecado());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("  e-Mail: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getEstagiario().getEmail());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\nNº da apólice do seguro: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getnApoliceSeguro());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk(", da empresa ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getEmpresaApoliceSeguro());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        document.add(paragrafo);

        //concedente
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 9));
        paragrafo.setSpacingAfter(10);
        chunk = new Chunk("CONCEDENTE", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);
        Concedente concedente = estagio.getConcedente();
        chunk = new Chunk("\nNome: ");
        paragrafo.add(chunk);
        chunk = new Chunk(concedente.getNome());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("  Pessoa: ");
        paragrafo.add(chunk);
        chunk = new Chunk(concedente.getPessoa());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("  CNPJ/CPF: ");
        paragrafo.add(chunk);
        chunk = new Chunk(concedente.getCpfCnpj());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("\nEndereço: ");
        paragrafo.add(chunk);
        chunk = new Chunk(concedente.getRua());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("  nº: ");
        paragrafo.add(chunk);
        chunk = new Chunk(String.valueOf(concedente.getnRua()));
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("  Bairro: ");
        paragrafo.add(chunk);
        chunk = new Chunk(concedente.getBairro());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("  CEP: ");
        paragrafo.add(chunk);
        chunk = new Chunk(concedente.getCep());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\nCidade: ");
        paragrafo.add(chunk);
        chunk = new Chunk(concedente.getCidade());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("  UF: ");
        paragrafo.add(chunk);
        chunk = new Chunk(concedente.getUf());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("  Telefone: ");
        paragrafo.add(chunk);
        chunk = new Chunk(concedente.getTelefone());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("  e-Mail: ");
        paragrafo.add(chunk);
        chunk = new Chunk(concedente.getEmail());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("  Representante legal: ");
        paragrafo.add(chunk);
        chunk = new Chunk(concedente.getRepresentanteLegal());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        document.add(paragrafo);

        //instituicao de ensino
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 9));
        paragrafo.setSpacingAfter(10);
        chunk = new Chunk("INSTITUIÇÃO DE ENSINO", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);

        chunk = new Chunk("\nFundação Universidade Federal de Mato Grosso do Sul (UFMS), Pessoa Jurídica de Direito Público, inscrita sob o CNPJ 15.461.510/0001-33, com sede na Cidade Universitária s/nº, CEP: 79070-900, em Campo Grande – MS, representada legalmente por Célia Maria Silva Correa Oliveira.");
        paragrafo.add(chunk);

        document.add(paragrafo);

        //paragrafo
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 9));
        paragrafo.setSpacingAfter(10);
        chunk = new Chunk("Tem entre si, justo e acordado, o presente Termo de Compromisso de Estágio mediante as seguintes cláusulas e condições:");
        paragrafo.add(chunk);

        document.add(paragrafo);

        //DAS DISPOSIÇÕES GERAIS
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 9));
        paragrafo.setSpacingAfter(10);
        chunk = new Chunk("DAS DISPOSIÇÕES GERAIS", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);

        chunk = new Chunk("\n        Cláusula 1ª. ", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);
        chunk = new Chunk("Para efeito deste instrumento, considera-se Estágio as atividades de aprendizagem supervisionada no ambiente de trabalho, proporcionadas ao ESTAGIÁRIO, pela participação em situações reais de vida e trabalho, realizadas junto à CONCEDENTE, sob orientação da INSTITUIÇÃO DE ENSINO, ora interveniente.");
        paragrafo.add(chunk);

        chunk = new Chunk("\n        Cláusula 2ª. ", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);
        chunk = new Chunk("O ESTAGIÁRIO declara estar regularmente matriculado e com frequência no curso ministrado pela INSTITUIÇÃO DE ENSINO.");
        paragrafo.add(chunk);

        chunk = new Chunk("\n        Cláusula 3ª. ", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);
        chunk = new Chunk("Este Termo de Compromisso, para todos os efeitos legais, está vinculado ao Acordo de Cooperação, celebrado entre a INSTITUIÇÃO DE ENSINO e a CONCEDENTE.");
        paragrafo.add(chunk);

        chunk = new Chunk("\n        Cláusula 4ª. ", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);
        chunk = new Chunk("O descumprimento de qualquer dos incisos do artigo 3ª da Lei n. 11788/2008 ou de qualquer obrigação contida neste Termo de Compromisso, caracteriza vínculo empregatício entre o ESTAGIÁRIO e a CONCEDENTE, para todos os fins da Legislação Trabalhista e Previdenciária.");
        paragrafo.add(chunk);

        chunk = new Chunk("\n        Cláusula 5ª. ", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);
        chunk = new Chunk("É vedada, no exercício do estágio, a realização de qualquer atividade em área não compatível com o curso.");
        paragrafo.add(chunk);

        document.add(paragrafo);

        //DO OBJETO
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 9));
        paragrafo.setSpacingAfter(10);
        chunk = new Chunk("DO OBJETO", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);

        chunk = new Chunk("\n        Cláusula 6ª. ", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);
        chunk = new Chunk("Este Termo de Compromisso tem por objetivo estabelecer e regulamentar a admissão do ESTAGIÁRIO, através da concessão de estágio pela CONCEDENTE, nos termos da Lei nº. 11.788/2008 e da Resolução COEG/UFMS nº 107/2010.");
        paragrafo.add(chunk);

        document.add(paragrafo);

        //DAS ATIVIDADES A SEREM EXECUTADAS PELO ESTAGIÁRIO
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 9));
        paragrafo.setSpacingAfter(10);
        chunk = new Chunk("DAS ATIVIDADES A SEREM EXECUTADAS PELO ESTAGIÁRIO", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);

        chunk = new Chunk("\n        Cláusula 7ª. ", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);
        chunk = new Chunk("As atividades a serem exercidas pelo ESTAGIÁRIO estão descritas no Plano de Atividade do Estagiário, em anexo, e devem ser compatíveis com a proposta pedagógica do curso.");
        paragrafo.add(chunk);

        chunk = new Chunk("\n        Cláusula 8ª. ", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);
        chunk = new Chunk("O Plano de Atividades será anexado ao Termo de Compromisso de Estágio sendo parte integrante e indissociável deste.");
        paragrafo.add(chunk);

        document.add(paragrafo);

        //DA JORNADA
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 9));
        paragrafo.setSpacingAfter(10);
        chunk = new Chunk("DA JORNADA", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);

        chunk = new Chunk("\n        Cláusula 9ª. ", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);
        chunk = new Chunk("A jornada do ESTAGIÁRIO será de ");
        paragrafo.add(chunk);
        chunk = new Chunk(String.valueOf(estagio.getCargaHorariaDiaria()));
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk(" horas diárias e ");
        paragrafo.add(chunk);
        chunk = new Chunk(String.valueOf(estagio.getCargaHorariaSemanal()));
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk(" horas semanais, garantida a compatibilidade com as atividades escolares.");
        paragrafo.add(chunk);

        chunk = new Chunk("\n        Cláusula 10ª. ", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);
        chunk = new Chunk("Se a INSTITUIÇÃO DE ENSINO adotar verificações de aprendizagem periódicas ou finais, o ESTAGIÁRIO terá direito a reduzir pelo menos à metade sua jornada diária, nos períodos de avaliação informados pelo Professor Orientador.");
        paragrafo.add(chunk);

        document.add(paragrafo);

        //DO DIREITO AO RECESSO
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 9));
        paragrafo.setSpacingAfter(10);
        chunk = new Chunk("DO DIREITO AO RECESSO", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);

        chunk = new Chunk("\n        Cláusula 11ª. ", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);
        if (estagio.isIsObrigatorio()) {
            chunk = new Chunk("É assegurado ao ESTAGIÁRIO, sempre que o estágio tenha duração igual ou superior a 1 (um) ano, período de recesso de 30 (trinta) dias, a ser gozado preferencialmente durante suas férias escolares, de acordo com o disposto na Lei nº 11.788/2008, artigo 13.");
        } else {
            chunk = new Chunk("É assegurado ao ESTAGIÁRIO, sempre que o estágio tenha duração igual ou superior a 1 (um) ano, período de recesso remunerado de 30 (trinta) dias, a ser gozado preferencialmente durante suas férias escolares, de acordo com o disposto na Lei nº 11.788/2008, artigo 13.");
        }
        paragrafo.add(chunk);

        chunk = new Chunk("\n        Cláusula 12ª. ", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);
        chunk = new Chunk("Os dias de recesso previstos na cláusula anterior serão concedidos de maneira proporcional, nos casos de o estágio ter duração inferior a 1 (um) ano.");
        paragrafo.add(chunk);

        chunk = new Chunk("\n        Cláusula 13ª. ", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);
        chunk = new Chunk("Compete à CONCEDENTE estipular o período de concessão do recesso, preferencialmente durante as férias escolares.");
        paragrafo.add(chunk);

        document.add(paragrafo);

        //DOS DEVERES DAS PARTES
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 9));
        paragrafo.setSpacingAfter(10);
        chunk = new Chunk("DOS DEVERES DAS PARTES", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);

        chunk = new Chunk("\n        Cláusula 14ª. ", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);
        chunk = new Chunk("Da INSTITUIÇÃO DE ENSINO:\n"
                + "                a) avaliar as instalações da CONCEDENTE do estágio e sua adequação à formação cultural e profissional do acadêmico;\n"
                + "                b) indicar Professor Orientador, como responsável pelo acompanhamento e avaliação das atividades do estagiário;\n"
                + "                c) exigir do acadêmico a apresentação periódica, em prazo não superior a 6 (seis) meses, do relatório das atividades;\n"
                + "                d) zelar pelo cumprimento do Termo de Compromisso;\n");
        paragrafo.add(chunk);
        if (estagio.isIsObrigatorio()) {
            chunk = new Chunk("                e) comunicar à CONCEDENTE, no início do período letivo, as datas de realização das avaliações.\n"
                    + "                f) contratar em favor do ESTAGIÁRIO seguro contra acidentes pessoais.");
        } else {
            chunk = new Chunk("                e) comunicar à CONCEDENTE, no início do período letivo, as datas de realização das avaliações;\n");
        }
        paragrafo.add(chunk);

        chunk = new Chunk("\n        Cláusula 15ª. ", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);
        chunk = new Chunk("Da CONCEDENTE:\n"
                + "                a) celebrar o Termo de Compromisso de Estágio com o ESTAGIÁRIO e a INSTITUIÇÃO DE ENSINO, zelando pelo seu fiel cumprimento;\n"
                + "                b) permitir o início das atividades de Estágio somente após o recebimento deste instrumento assinado pelos partícipes;\n"
                + "                c) conceder o Estágio e proporcionar ao ESTAGIÁRIO condições propícias para o exercício das atividades de aprendizagem relacionadas ao seu curso;\n"
                + "                d) designar funcionário de seu quadro de pessoal, com formação ou experiência profissional na área de conhecimento do curso do ESTAGIÁRIO, para atuar como Supervisor de Estágio, orientando e supervisionando o ESTAGIÁRIO;\n"
                + "                e) manter à disposição da fiscalização documentos que comprovem a relação de estágio;\n"
                + "                f) enviar à INSTITUIÇÃO DE ENSINO, no máximo a cada 6 (seis) meses, relatório parcial de atividades, com vista obrigatória ao ESTAGIÁRIO;\n"
                + "                g) fornecer à instituição de ensino todas as informações necessárias à avaliação e acompanhamento do estágio, quando solicitado;\n"
                + "                h) solicitar ao ESTAGIÁRIO, a qualquer tempo, documentos comprobatórios da regularidade da situação escolar, uma vez que trancamento de matrícula, abandono, conclusão de curso ou transferência de Instituição de Ensino constituem motivos de rescisão;\n"
                + "                i) manter à disposição da fiscalização os documentos que comprovem a relação de Estágio;\n"
                + "                j) por ocasião do desligamento do estagiário, entregar ao Professor Orientador, relatório final de atividades do acadêmico, com indicação resumida das atividades desenvolvidas, dos períodos e da avaliação de desempenho;\n");
        paragrafo.add(chunk);
        if (estagio.isIsObrigatorio()) {
            chunk = new Chunk("                k) informar à INSTITUIÇÃO DE ENSINO os casos de descumprimento ao estabelecido neste termo.");
        } else {
            chunk = new Chunk("                k) contratar em favor do ESTAGIÁRIO seguro contra acidentes pessoais;\n"
                    + "                l) pagar pontualmente a bolsa e o auxílio transporte diretamente ao ESTAGIÁRIO;\n"
                    + "                m) informar à INSTITUIÇÃO DE ENSINO os casos de descumprimento ao estabelecido neste termo.");
        }
        paragrafo.add(chunk);

        chunk = new Chunk("\n        Cláusula 16ª. ", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);
        chunk = new Chunk("Do ESTAGIÁRIO:\n"
                + "                a) cumprir com zelo e responsabilidade as tarefas que lhe forem submetidas, conforme o Plano de Atividades;\n"
                + "                b) cumprir as condições fixadas para o Estágio, observando as normas de trabalho vigente na CONCEDENTE, preservando a confidencialidade das informações às quais tenham acesso;\n"
                + "                c) observar a jornada e o horário ajustados para o Estágio;\n"
                + "                d) manter atualizados seus dados cadastrais e escolares, junto à CONCEDENTE;\n"
                + "                e) informar de imediato à CONCEDENTE, qualquer alteração na sua situação escolar, tais como: trancamento de matrícula, abandono, conclusão de curso ou transferência de Instituição de Ensino;\n"
                + "                f) entregar ao j) assinar, ao término do estágio, o termo de desligamento, a ser fornecido pela CONCEDENTE.Professor Orientador os relatórios parciais de atividades, com periodicidade não superior a seis meses, e o relatório final de atividades, ao final do estágio, ambos com visto do supervisor;\n"
                + "                g) entregar à CONCEDENTE, durante a vigência deste termo, a cada início de semestre letivo, declaração atualizada da INSTITUIÇÃO DE ENSINO atestando a sua matrícula e regular frequência;\n"
                + "                h) acatar as normas internas da CONCEDENTE, bem como orientações e recomendações efetuadas por seu Supervisor;\n"
                + "                i) responder pelas perdas e danos eventualmente causados por inobservância das normas internas da CONCEDENTE, ou provocados por negligência ou imprudência;\n"
                + "                j) assinar, ao término do estágio, o termo de desligamento, a ser fornecido pela CONCEDENTE.\n");
        paragrafo.add(chunk);

        document.add(paragrafo);

        //DO PROFESSOR ORIENTADOR E DO SUPERVISOR DE ESTÁGIO
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 9));
        paragrafo.setSpacingAfter(10);
        chunk = new Chunk("DO PROFESSOR ORIENTADOR E DO SUPERVISOR DE ESTÁGIO", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);
        chunk = new Chunk("\n        Cláusula 17ª. ", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);
        chunk = new Chunk("O ESTAGIÁRIO terá acompanhamento direto na prática de suas atividades, durante o período integral de sua realização, no local do estágio, pelo Supervisor de Estágio ");
        paragrafo.add(chunk);
        Supervisor supervisor = estagio.getSupervisor();
        chunk = new Chunk(supervisor.getNome());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk(", que ocupa o cargo ");
        paragrafo.add(chunk);
        chunk = new Chunk(supervisor.getCargo());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk(", com formação ou experiência profissional em ");
        paragrafo.add(chunk);
        chunk = new Chunk(supervisor.getFormacaoExperienciaProfissional());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk(".");
        paragrafo.add(chunk);

        chunk = new Chunk("\n        Cláusula 18ª. ", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);
        chunk = new Chunk("O ESTAGIÁRIO terá orientação do Professor Orientador ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getOrientador().getNome());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk(".");
        paragrafo.add(chunk);

        document.add(paragrafo);

        //DA BOLSA AUXÍLIO E DO AUXÍLIO TRANSPORTE
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 9));
        paragrafo.setSpacingAfter(10);
        chunk = new Chunk("DA BOLSA AUXÍLIO E DO AUXÍLIO TRANSPORTE", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);
        chunk = new Chunk("\n        Cláusula 19ª. ", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);

        if (estagio.isIsObrigatorio()) {
            chunk = new Chunk("É facultada a concessão de bolsa mensal e de auxílio transporte.");
            paragrafo.add(chunk);
            document.add(paragrafo);
            paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 9));
            paragrafo.setSpacingAfter(10);
            chunk = new Chunk("DO VÍNCULO", FontFactory.getFont(FontFactory.TIMES_BOLD));
            paragrafo.add(chunk);
            chunk = new Chunk("\n        Cláusula 20ª. ", FontFactory.getFont(FontFactory.TIMES_BOLD));
            paragrafo.add(chunk);
            chunk = new Chunk("O Estágio não caracteriza vínculo de emprego de qualquer natureza, desde que observados os requisitos legais, não sendo devidos encargos sociais, trabalhistas e previdenciários (Artigos 3º e 15 da Lei nº 11.788/2008).");
        } else {
            chunk = new Chunk("O ESTAGIÁRIO receberá bolsa ou outra forma de contraprestação mensal, no período do estágio, com valor de R$");
            paragrafo.add(chunk);
            chunk = new Chunk(String.valueOf(estagio.getValorBolsa()));
            chunk.setUnderline(0.1f, -2f);
            paragrafo.add(chunk);
            chunk = new Chunk(".");
            paragrafo.add(chunk);
            chunk = new Chunk("\n        Cláusula 20ª. ", FontFactory.getFont(FontFactory.TIMES_BOLD));
            paragrafo.add(chunk);
            chunk = new Chunk("O ESTAGIÁRIO terá direito ao pagamento de R$");
            paragrafo.add(chunk);
            chunk = new Chunk(String.valueOf(estagio.getValorAuxilioTransporte()));
            chunk.setUnderline(0.1f, -2f);
            paragrafo.add(chunk);
            chunk = new Chunk(", a título de ajuda transporte.");
        }
        paragrafo.add(chunk);

        document.add(paragrafo);

        //DA VIGÊNCIA
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 9));
        paragrafo.setSpacingAfter(10);
        chunk = new Chunk("DA VIGÊNCIA", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);
        chunk = new Chunk("\n        Cláusula 21ª. ", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);
        chunk = new Chunk("O Estágio terá início na data da assinatura deste termo e será válido até ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getTerminoPrevisto());
        chunk.setUnderline(0.1f, -2f);
        chunk = new Chunk(", podendo ser prorrogado, a critério das partes, desde que não ultrapasse 02 (dois) anos, exceto quando se tratar de ESTAGIÁRIO portador de deficiência.");
        paragrafo.add(chunk);
        paragrafo.add(chunk);

        document.add(paragrafo);

        //DA RESCISÃO
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 9));
        paragrafo.setSpacingAfter(10);
        chunk = new Chunk("DA RESCISÃO", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);
        chunk = new Chunk("\n        Cláusula 22ª. ", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);
        chunk = new Chunk("A rescisão deste termo ocorrerá nos seguintes casos:\n"
                + "                a) conclusão, trancamento, desligamento ou abandono do curso;\n"
                + "                b) transferência para outra Instituição de Ensino;\n"
                + "                c) não comparecimento sem motivo justificado por mais de cinco dias, consecutivos ou não, no período de um mês, ou por trinta dias durante o período de estágio;\n"
                + "                d) descumprimento de qualquer cláusula deste termo e/ou de seus respectivos aditivos;\n"
                + "                e) desistência do Estágio ou rescisão do Termo de Compromisso de Estágio.");
        paragrafo.add(chunk);
        chunk = new Chunk("\n        Cláusula 23ª. ", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);
        chunk = new Chunk("A rescisão do presente Termo de Compromisso de Estágio poderá ser feita a qualquer tempo, unilateralmente, mediante comunicação por escrito, feita com cinco dias de antecedência.");
        paragrafo.add(chunk);

        document.add(paragrafo);

        //DO FORO
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 9));
        paragrafo.setSpacingAfter(10);
        chunk = new Chunk("DO FORO", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);
        chunk = new Chunk("\n        Cláusula 24ª. ", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);
        chunk = new Chunk("Fica eleito o foro da Justiça Federal, 1ª Subseção Judiciária de Mato grosso do Sul – Campo Grande, com renúncia de qualquer outro, por mais privilegiado que seja, para dirimir quaisquer dúvidas ou controvérsias em decorrência do presente Termo de Compromisso de Estágio que não puderem ser decididas diretamente pelos partícipes.");
        paragrafo.add(chunk);

        document.add(paragrafo);

        //paragrafo final
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 9));
        paragrafo.setSpacingAfter(10);
        chunk = new Chunk("E por estarem justas e acordadas, as partes assinam o presente termo de compromisso em 03 vias de igual teor e forma.");

        //Assinaturas
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 9));
        paragrafo.setAlignment(Element.ALIGN_CENTER);
        chunk = new Chunk("\nLocal: _________________________________      Data: _________________________________\n\n\n");
        paragrafo.add(chunk);

        chunk = new Chunk("                              Concedente                              ");
        chunk.setUnderline(0.1f, 10f);
        paragrafo.add(chunk);

        chunk = new Chunk("    ");
        paragrafo.add(chunk);

        chunk = new Chunk("                              Estagiário                              ");
        chunk.setUnderline(0.1f, 10f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n\n\n");
        paragrafo.add(chunk);

        chunk = new Chunk("                         Presidente da COE                        ");
        chunk.setUnderline(0.1f, 10f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n\nTestemunhas:\n\n\n_________________________________________    _________________________________________");
        paragrafo.add(chunk);

        paragrafo.setSpacingAfter(20);
        document.add(paragrafo);

        document.close();

        return true;
    }

    @Override
    public boolean gerarPlanoAtividades(Estagio estagio) throws DocumentException, FileNotFoundException, BadElementException, MalformedURLException, IOException {
        //Instanciação do Objeto do Documento        
        Document document = new Document(PageSize.A4, 50, 50, 50, 50);
        //Criação de Objeto PdfWriter        
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(caminho + "PlanoAtividades.pdf"));
        HeaderFooter event = new HeaderFooter();
        writer.setPageEvent(event);
        document.open();


        //Cabecalho
        Paragraph paragrafo = new Paragraph("Plano de Atividades do Estagiário", FontFactory.getFont(FontFactory.TIMES_ROMAN, 18, Font.BOLD));
        paragrafo.setAlignment(Element.ALIGN_CENTER);
        paragrafo.setSpacingAfter(2);
        document.add(paragrafo);

        Chunk chunk = new Chunk("                                                                                                                                            ");
        chunk.setUnderline(0.1f, 0f);
        chunk.setUnderline(0.1f, 2f);
        paragrafo = new Paragraph(chunk);
        paragrafo.setAlignment(Element.ALIGN_CENTER);
        paragrafo.setSpacingAfter(10);
        document.add(paragrafo);

        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 12));
        chunk = new Chunk("Curso: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getEstagiario().getCurso().getNome());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\nModalidade de estágio: ");
        paragrafo.add(chunk);
        if (estagio.isIsObrigatorio()) {
            chunk = new Chunk("Obrigatório");
        } else {
            chunk = new Chunk("Não-obrigatório");
        }
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        paragrafo.setSpacingAfter(20);
        document.add(paragrafo);

        //estagiario       
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 12));
        chunk = new Chunk("1)    IDENTIFICAÇÃO DO ESTAGIÁRIO", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);

        chunk = new Chunk("\n         Nome: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getEstagiario().getNome());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n         Endereço: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getEstagiario().getRua() + ", n." + estagio.getEstagiario().getnRua() + ", " + estagio.getEstagiario().getBairro() + ", " + estagio.getEstagiario().getCep());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n         Telefone: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getEstagiario().getTelefone());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n         e-Mail: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getEstagiario().getEmail());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        paragrafo.setSpacingAfter(20);
        document.add(paragrafo);

        //Empresa
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 12));
        chunk = new Chunk("2)    EMPRESA", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);

        chunk = new Chunk("\n         Nome: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getConcedente().getNome());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n         Endereço: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getConcedente().getRua() + ", n." + estagio.getConcedente().getnRua() + ", " + estagio.getConcedente().getBairro());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n         Cidade: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getConcedente().getCidade());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("  Estado: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getConcedente().getUf());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("  CEP: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getConcedente().getCep());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n         Telefone: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getConcedente().getTelefone());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("  Ramal: ");
        paragrafo.add(chunk);
        chunk = new Chunk();
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("  Fax: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getConcedente().getFax());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n         e-Mail: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getConcedente().getEmail());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        paragrafo.setSpacingAfter(20);
        document.add(paragrafo);

        //Supervisor
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 12));
        chunk = new Chunk("3)    SUPERVISOR", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);

        chunk = new Chunk("\n         Nome: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getSupervisor().getNome());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n         Telefone: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getSupervisor().getTelefone());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("  Ramal: ");
        paragrafo.add(chunk);
        chunk = new Chunk();
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("  Fax: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getSupervisor().getFax());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n         e-Mail: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getSupervisor().getEmail());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        paragrafo.setSpacingAfter(20);
        document.add(paragrafo);

        //Orientador
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 12));
        chunk = new Chunk("4)    PROFESSOR ORIENTADOR", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);

        chunk = new Chunk("\n         Nome: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getOrientador().getNome());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        paragrafo.setSpacingAfter(20);
        document.add(paragrafo);

        //Estagio
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 12));
        paragrafo.setAlignment(Element.ALIGN_JUSTIFIED);
        chunk = new Chunk("5)    DADOS SOBRE O ESTÁGIO", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);

        chunk = new Chunk("\n         Tema: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getTema());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n         Área: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getArea());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("    Carga Horária Total Prevista (horas): ");
        paragrafo.add(chunk);
        chunk = new Chunk(String.valueOf(estagio.getCargaHorariaTotalPrevista()));
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n         Duração Prevista    Início: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getInicioPrevisto());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("    Término: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getTerminoPrevisto());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n\n         5.1)      HORÁRIO DO ESTÁGIO\n", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);
        StringTokenizer st = new StringTokenizer(estagio.getHorarioEstagio(), "@");
        PdfPTable tabela = new PdfPTable(7);
        tabela.setWidthPercentage(100.0f);
        PdfPCell celula = new PdfPCell();
        celula.setBackgroundColor(BaseColor.LIGHT_GRAY);
        celula.setHorizontalAlignment(Element.ALIGN_CENTER);
        celula.setPhrase(new Phrase("Hora", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        tabela.addCell(celula);
        celula.setPhrase(new Phrase("Segunda", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        tabela.addCell(celula);
        celula.setPhrase(new Phrase("Terça", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        tabela.addCell(celula);
        celula.setPhrase(new Phrase("Quarta", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        tabela.addCell(celula);
        celula.setPhrase(new Phrase("Quinta", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        tabela.addCell(celula);
        celula.setPhrase(new Phrase("Sexta", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        tabela.addCell(celula);
        celula.setPhrase(new Phrase("Sábado", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        tabela.addCell(celula);
        for (int i = 0; i < 15; i++) {
            int a = i + 7, b = i + 8;
            String string = String.valueOf(a) + "-" + String.valueOf(b);
            tabela.addCell(string);
            for (int j = 0; j < 6; j++) {
                tabela.addCell(st.nextToken());
            }
        }
        paragrafo.add(tabela);

        chunk = new Chunk("\n\n         5.2)      JUSTIFICATIVA\n", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);

        chunk = new Chunk(estagio.getJustificativa());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n\n         5.3)      OBJETIVO\n", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);

        chunk = new Chunk(estagio.getObjetivo());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n\n         5.4)      METODOLOGIA\n", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);

        chunk = new Chunk(estagio.getMetodologia());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n\n         5.5)      CRONOGRAMA\n", FontFactory.getFont(FontFactory.TIMES_BOLD));
        paragrafo.add(chunk);
        st = new StringTokenizer(estagio.getCronograma(), "@");
        tabela = new PdfPTable(new float[]{5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1});
        tabela.setWidthPercentage(100.0f);
        celula = new PdfPCell();
        celula.setBackgroundColor(BaseColor.LIGHT_GRAY);
        celula.setHorizontalAlignment(Element.ALIGN_CENTER);
        celula.setPhrase(new Phrase("Atividades", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        tabela.addCell(celula);
        celula.setPhrase(new Phrase("jan", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        tabela.addCell(celula);
        celula.setPhrase(new Phrase("fev", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        tabela.addCell(celula);
        celula.setPhrase(new Phrase("mar", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        tabela.addCell(celula);
        celula.setPhrase(new Phrase("abr", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        tabela.addCell(celula);
        celula.setPhrase(new Phrase("mai", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        tabela.addCell(celula);
        celula.setPhrase(new Phrase("jun", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        tabela.addCell(celula);
        celula.setPhrase(new Phrase("jul", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        tabela.addCell(celula);
        celula.setPhrase(new Phrase("ago", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        tabela.addCell(celula);
        celula.setPhrase(new Phrase("set", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        tabela.addCell(celula);
        celula.setPhrase(new Phrase("out", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        tabela.addCell(celula);
        celula.setPhrase(new Phrase("nov", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        tabela.addCell(celula);
        celula.setPhrase(new Phrase("dez", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        tabela.addCell(celula);
        for (int i = 0; i < 6; i++) {
            for (int j = 0; j < 13; j++) {
                String string = st.nextToken();
                if (string.compareTo("on") == 0) {
                    tabela.addCell("X");
                } else if (string.compareTo("null") == 0) {
                    tabela.addCell(" ");
                } else {
                    tabela.addCell(string);
                }
            }
        }
        paragrafo.add(tabela);

        paragrafo.setSpacingAfter(20);
        document.add(paragrafo);

        //Assinaturas
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 12));
        chunk = new Chunk("\nLocal: _________________________________      Data: _________________________________\n\n\n");
        paragrafo.add(chunk);

        chunk = new Chunk("                              Supervisor                              ");
        chunk.setUnderline(0.1f, 10f);
        paragrafo.add(chunk);

        chunk = new Chunk("    ");
        paragrafo.add(chunk);

        chunk = new Chunk("                              Estagiário                              ");
        chunk.setUnderline(0.1f, 10f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n\n\n");
        paragrafo.add(chunk);

        paragrafo.setAlignment(Element.ALIGN_CENTER);
        chunk = new Chunk("                       Professor Orientador                      ");
        chunk.setUnderline(0.1f, 10f);
        paragrafo.add(chunk);

        paragrafo.setSpacingAfter(20);
        document.add(paragrafo);

        //parecer da coe
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 12));
        PdfPTable table = new PdfPTable(1);
        table.setWidthPercentage(100.0f);
        PdfPCell header = new PdfPCell(new Paragraph("Parecer da COE:\n\n\n\n\n\n\n\n"
                + "Campo Grande/MS, ____/____/________    ______________________________________\n"
                + "                                                                                        Presidente da COE/Facom"));
        table.addCell(header);

        paragrafo.add(table);

        paragrafo.setSpacingAfter(20);
        document.add(paragrafo);

        document.close();
        return true;


    }

    @Override
    public boolean gerarAvaliacao(boolean isEstagiario, Estagio estagio) throws FileNotFoundException, DocumentException {
        //Instanciação do Objeto do Documento        
        Document document = new Document(PageSize.A4, 50, 50, 50, 50);
        //Criação de Objeto PdfWriter
        Estagiario estagiario = estagio.getEstagiario();
        Avaliacao avaliacao = null;
        if (isEstagiario) {
            avaliacao = estagio.getAvaliacaoEstagiario();
        } else {
            avaliacao = estagio.getAvaliacaoSupervisor();
        }

        PdfWriter writer;
        if (isEstagiario) {
            writer = PdfWriter.getInstance(document, new FileOutputStream(caminho + "AvaliacaoEstagiario.pdf"));
        } else {
            writer = PdfWriter.getInstance(document, new FileOutputStream(caminho + "AvaliacaoSupervisor.pdf"));
        }
        HeaderFooter event = new HeaderFooter();
        writer.setPageEvent(event);
        document.open();

        //Cabecalho
        Paragraph paragrafo;
        if (isEstagiario) {
            paragrafo = new Paragraph("AUTO-AVALIAÇÃO DO ESTAGIÁRIO", FontFactory.getFont(FontFactory.TIMES_ROMAN, 18, Font.BOLD));
        } else {
            paragrafo = new Paragraph("AVALIAÇÃO DO ESTAGIÁRIO PELO SUPERVISOR", FontFactory.getFont(FontFactory.TIMES_ROMAN, 18, Font.BOLD));
        }
        paragrafo.setAlignment(Element.ALIGN_CENTER);
        paragrafo.setSpacingAfter(2);
        document.add(paragrafo);

        Chunk chunk = new Chunk("                                                                                                                                            ");
        chunk.setUnderline(0.1f, 0f);
        chunk.setUnderline(0.1f, 2f);
        paragrafo = new Paragraph(chunk);
        paragrafo.setAlignment(Element.ALIGN_CENTER);
        paragrafo.setSpacingAfter(10);
        document.add(paragrafo);

        //informacoes
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 12));
        paragrafo.setSpacingAfter(20);
        chunk = new Chunk("Curso: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagiario.getCurso().getNome());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\nModalidade de estágio: ");
        paragrafo.add(chunk);
        if (estagio.isIsObrigatorio()) {
            chunk = new Chunk("Obrigatório");
        } else {
            chunk = new Chunk("Não-obrigatório");
        }
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        document.add(paragrafo);

        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 12));
        paragrafo.setSpacingAfter(20);
        chunk = new Chunk("Estagiário: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagiario.getNome());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("\nProfessor Orientador: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getOrientador().getNome());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("\nEmpresa: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getConcedente().getNome());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("\nSupervisor: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getSupervisor().getNome());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("\nPeríodo: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getInicioPrevisto());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk(" a ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getTerminoPrevisto());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("\nBolsa ou outra forma de contraprestação: ");
        paragrafo.add(chunk);
        if (estagio.getValorAuxilioTransporte() + estagio.getValorBolsa() > 0) {
            chunk = new Chunk("Sim");
        } else {
            chunk = new Chunk("Não");
        }
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        document.add(paragrafo);

        //01)	ASPECTOS INTERPESSOAIS
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 12));
        paragrafo.setSpacingAfter(20);
        chunk = new Chunk("01)  ASPECTOS INTERPESSOAIS", FontFactory.getFont(FontFactory.TIMES_BOLD, 12));
        paragrafo.add(chunk);
        chunk = new Chunk(" (Notas de 1 a 5)");
        paragrafo.add(chunk);

        PdfPTable tabela = new PdfPTable(new float[]{9, 1});
        tabela.setWidthPercentage(100.0f);
        PdfPCell celula = new PdfPCell();
        celula.setPhrase(new Phrase("Quesito", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        celula.setBackgroundColor(BaseColor.LIGHT_GRAY);
        celula.setHorizontalAlignment(Element.ALIGN_CENTER);
        tabela.addCell(celula);
        celula.setPhrase(new Phrase("Nota", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        tabela.addCell(celula);
        tabela.addCell(new Phrase("1. O relacionamento com os superiores", FontFactory.getFont(FontFactory.TIMES_ROMAN, 10)));
        tabela.addCell(String.valueOf(avaliacao.getAi1()));
        tabela.addCell(new Phrase("2. O relacionamento com o(s) supervisor(es) na empresa", FontFactory.getFont(FontFactory.TIMES_ROMAN, 10)));
        tabela.addCell(String.valueOf(avaliacao.getAi2()));
        tabela.addCell(new Phrase("3. O relacionamento com os colegas de estágio", FontFactory.getFont(FontFactory.TIMES_ROMAN, 10)));
        tabela.addCell(String.valueOf(avaliacao.getAi3()));
        tabela.addCell(new Phrase("4. O relacionamento com os demais elementos dentro da empresa", FontFactory.getFont(FontFactory.TIMES_ROMAN, 10)));
        tabela.addCell(String.valueOf(avaliacao.getAi4()));
        tabela.addCell(new Phrase("TOTAL", FontFactory.getFont(FontFactory.TIMES_ROMAN, 10)));

        tabela.addCell(String.valueOf(avaliacao.getResultado1()));
        paragrafo.add(tabela);

        document.add(paragrafo);

        //02)	ASPECTOS PESSOAIS
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 12));
        paragrafo.setSpacingAfter(20);
        chunk = new Chunk("02)  ASPECTOS PESSOAIS", FontFactory.getFont(FontFactory.TIMES_BOLD, 12));
        paragrafo.add(chunk);
        chunk = new Chunk(" (Notas de 1 a 5)");
        paragrafo.add(chunk);

        tabela = new PdfPTable(new float[]{9, 1});
        tabela.setWidthPercentage(100.0f);
        celula = new PdfPCell();
        celula.setPhrase(new Phrase("Quesito", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        celula.setBackgroundColor(BaseColor.LIGHT_GRAY);
        celula.setHorizontalAlignment(Element.ALIGN_CENTER);
        tabela.addCell(celula);
        celula.setPhrase(new Phrase("Nota", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        tabela.addCell(celula);
        tabela.addCell(new Phrase("1. Assiduidade. Assiduidade e pontualidade aos expedientes diários na empresa", FontFactory.getFont(FontFactory.TIMES_ROMAN, 10)));
        tabela.addCell(String.valueOf(avaliacao.getAp1()));
        tabela.addCell(new Phrase("2. Disciplina. Facilidade em aceitar e seguir instruções de superiores e acatar regulamentos e normas", FontFactory.getFont(FontFactory.TIMES_ROMAN, 10)));
        tabela.addCell(String.valueOf(avaliacao.getAp2()));
        tabela.addCell(new Phrase("3. Sociabilidade e desembaraço. Facilidade e espontaneidade com que age frente as pessoas, fatos e situações", FontFactory.getFont(FontFactory.TIMES_ROMAN, 10)));
        tabela.addCell(String.valueOf(avaliacao.getAp3()));
        tabela.addCell(new Phrase("4. Cooperação. Atuação junto a outras pessoas no sentido de contribuir para o alcance de um objetivo comum: influência positiva no grupo", FontFactory.getFont(FontFactory.TIMES_ROMAN, 10)));
        tabela.addCell(String.valueOf(avaliacao.getAp4()));
        tabela.addCell(new Phrase("5. Responsabilidade. Capacidade de cuidar e responder pelas atribuições materiais, equipamentos e bens da empresa, que lhe são confiados no estágio", FontFactory.getFont(FontFactory.TIMES_ROMAN, 10)));
        tabela.addCell(String.valueOf(avaliacao.getAp5()));
        tabela.addCell(new Phrase("6. Merecimento de confiança. Discrição demonstrada quanto ao sigilo das atividades a ele confiados", FontFactory.getFont(FontFactory.TIMES_ROMAN, 10)));
        tabela.addCell(String.valueOf(avaliacao.getAp6()));
        tabela.addCell(new Phrase("TOTAL", FontFactory.getFont(FontFactory.TIMES_ROMAN, 10)));
        tabela.addCell(String.valueOf(avaliacao.getResultado2()));
        paragrafo.add(tabela);

        document.add(paragrafo);

        //03)	ASPECTOS TÉCNICOS-PROFISSIONAIS
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 12));
        paragrafo.setSpacingAfter(20);
        chunk = new Chunk("03)  ASPECTOS TÉCNICOS-PROFISSIONAIS", FontFactory.getFont(FontFactory.TIMES_BOLD, 12));
        paragrafo.add(chunk);
        chunk = new Chunk(" (Notas de 1 a 5)");
        paragrafo.add(chunk);

        tabela = new PdfPTable(new float[]{9, 1});
        tabela.setWidthPercentage(100.0f);
        celula = new PdfPCell();
        celula.setPhrase(new Phrase("Quesito", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        celula.setBackgroundColor(BaseColor.LIGHT_GRAY);
        celula.setHorizontalAlignment(Element.ALIGN_CENTER);
        tabela.addCell(celula);
        celula.setPhrase(new Phrase("Nota", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        tabela.addCell(celula);
        tabela.addCell(new Phrase("1. Rendimento do estagiário. Qualidade, rapidez, precisão com que executa as tarefas integrantes do programa de estágio", FontFactory.getFont(FontFactory.TIMES_ROMAN, 10)));
        tabela.addCell(String.valueOf(avaliacao.getAtp1()));
        tabela.addCell(new Phrase("2. Facilidade na compreensão. Rapidez e facilidade de entender, interpretar e pôr em prática instruções e informações verbais e escritas", FontFactory.getFont(FontFactory.TIMES_ROMAN, 10)));
        tabela.addCell(String.valueOf(avaliacao.getAtp2()));
        tabela.addCell(new Phrase("3. Conhecimentos teóricos. Conhecimento demonstrado no cumprimento do programa de estágio, tendo em vista sua escolaridade", FontFactory.getFont(FontFactory.TIMES_ROMAN, 10)));
        tabela.addCell(String.valueOf(avaliacao.getAtp3()));
        tabela.addCell(new Phrase("4. Interesse. Mostrar interesse pelo andamento do trabalho. Disponibilidade para realizar tarefas voluntárias", FontFactory.getFont(FontFactory.TIMES_ROMAN, 10)));
        tabela.addCell(String.valueOf(avaliacao.getAtp4()));
        tabela.addCell(new Phrase("5. Organização e método no trabalho. Uso de meios racionais visando melhorar a forma de executar o trabalho", FontFactory.getFont(FontFactory.TIMES_ROMAN, 10)));
        tabela.addCell(String.valueOf(avaliacao.getAtp5()));
        tabela.addCell(new Phrase("6. Criatividade. Capacidade de sugerir, projetar ou exercer modificações ou inovações na empresa. Capacidade de adaptar conteúdo teórico à prática", FontFactory.getFont(FontFactory.TIMES_ROMAN, 10)));
        tabela.addCell(String.valueOf(avaliacao.getAtp6()));
        tabela.addCell(new Phrase("TOTAL", FontFactory.getFont(FontFactory.TIMES_ROMAN, 10)));

        tabela.addCell(String.valueOf(avaliacao.getResultado3()));
        paragrafo.add(tabela);

        document.add(paragrafo);

        //04) comente
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 12));
        paragrafo.setSpacingAfter(20);
        chunk = new Chunk("04)  COMENTE SOBRE OS ASSUNTOS ABAIXO\n", FontFactory.getFont(FontFactory.TIMES_BOLD, 12));
        paragrafo.add(chunk);
        if (isEstagiario) {
            chunk = new Chunk("        04.1)  Como você qualificaria o aproveitamento do seu estágio?\n");
            paragrafo.add(chunk);
            chunk = new Chunk(estagio.getAvaliacaoEstagiario().getAproveitamento());
            chunk.setUnderline(0.1f, -2f);
            paragrafo.add(chunk);
            chunk = new Chunk("\n\n        04.2)  Qual o grau de contribuição do estágio para sua formação profissional?\n");
            paragrafo.add(chunk);
            chunk = new Chunk(estagio.getAvaliacaoEstagiario().getContribuicao());
            chunk.setUnderline(0.1f, -2f);
            paragrafo.add(chunk);
        } else {
            chunk = new Chunk("        04.1)  Recomenda o prosseguimento do estágio? Em caso negativo, comente e sugira providências: (preencher apenas no caso em que o estágio não tenha sido concluído)\n");
            paragrafo.add(chunk);
            chunk = new Chunk(estagio.getAvaliacaoSupervisor().getProsseguimento());
            chunk.setUnderline(0.1f, -2f);
            paragrafo.add(chunk);
            chunk = new Chunk("\n\n        04.2)  Recomenda outros estagiários na empresa? Por que?\n");
            paragrafo.add(chunk);
            chunk = new Chunk(estagio.getAvaliacaoSupervisor().getOutrosEstagiarios());
            chunk.setUnderline(0.1f, -2f);
            paragrafo.add(chunk);
        }

        chunk = new Chunk("\n\n        04.3)  Observaçõess e sugestões que julgar úteis\n");
        paragrafo.add(chunk);
        chunk = new Chunk(avaliacao.getSugestoes());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        document.add(paragrafo);

        //resultados finais
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 12));
        paragrafo.setSpacingAfter(20);

        tabela = new PdfPTable(new float[]{9, 1});
        tabela.setWidthPercentage(100.0f);
        celula = new PdfPCell();
        celula.setPhrase(new Phrase("Resultados", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        celula.setBackgroundColor(BaseColor.LIGHT_GRAY);
        celula.setHorizontalAlignment(Element.ALIGN_CENTER);
        tabela.addCell(celula);
        celula.setPhrase(new Phrase("Nota", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        tabela.addCell(celula);
        tabela.addCell(new Phrase("Resultado I multiplicado por 2", FontFactory.getFont(FontFactory.TIMES_ROMAN, 10)));
        tabela.addCell(String.valueOf(avaliacao.getResultado1() * 2));
        tabela.addCell(new Phrase("Resultado II multiplicado por 3", FontFactory.getFont(FontFactory.TIMES_ROMAN, 10)));
        tabela.addCell(String.valueOf(avaliacao.getResultado2() * 3));
        tabela.addCell(new Phrase("Resultado III multiplicado por 5", FontFactory.getFont(FontFactory.TIMES_ROMAN, 10)));
        tabela.addCell(String.valueOf(avaliacao.getResultado3() * 5));
        tabela.addCell(new Phrase("Total Geral", FontFactory.getFont(FontFactory.TIMES_ROMAN, 10)));
        tabela.addCell(String.valueOf(avaliacao.getTotalGeral()));
        paragrafo.add(tabela);

        document.add(paragrafo);

        //Assinaturas
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 9));
        paragrafo.setAlignment(Element.ALIGN_CENTER);
        chunk = new Chunk("\nLocal: _________________________________      Data: _________________________________\n\n\n");
        paragrafo.add(chunk);

        if (isEstagiario) {
            chunk = new Chunk("                              Estagiário                              ");
        } else {
            chunk = new Chunk("                              Supervisor                              ");
        }
        chunk.setUnderline(0.1f, 10f);
        paragrafo.add(chunk);

        document.add(paragrafo);

        document.close();
        return true;
    }

    @Override
    public boolean gerarRelatorioAtividades(Estagio estagio) throws DocumentException, FileNotFoundException {
        //Instanciação do Objeto do Documento        
        Document document = new Document(PageSize.A4, 50, 50, 50, 50);
        //Criação de Objeto PdfWrit
        RelatorioAtividades relatorioAtividades = estagio.getRelatorioAtividades();
        Estagiario estagiario = estagio.getEstagiario();
        PdfWriter writer;
        if (relatorioAtividades.isIsFinal()) {
            writer = PdfWriter.getInstance(document, new FileOutputStream(caminho + "RelatorioAtividadesFinal.pdf"));
        } else {
            writer = PdfWriter.getInstance(document, new FileOutputStream(caminho + "RelatorioAtividadesParcial.pdf"));
        }
        HeaderFooter event = new HeaderFooter();
        writer.setPageEvent(event);
        document.open();

        //Cabecalho
        Paragraph paragrafo;
        if (relatorioAtividades.isIsFinal()) {
            paragrafo = new Paragraph("RELATÓRIO FINAL DE ATIVIDADES DE ESTÁGIO", FontFactory.getFont(FontFactory.TIMES_ROMAN, 18, Font.BOLD));
        } else {
            paragrafo = new Paragraph("RELATÓRIO PARCIAL DE ATIVIDADES DE ESTÁGIO", FontFactory.getFont(FontFactory.TIMES_ROMAN, 18, Font.BOLD));
        }
        paragrafo.setAlignment(Element.ALIGN_CENTER);
        paragrafo.setSpacingAfter(2);
        document.add(paragrafo);

        Chunk chunk = new Chunk("                                                                                                                                            ");
        chunk.setUnderline(0.1f, 0f);
        chunk.setUnderline(0.1f, 2f);
        paragrafo = new Paragraph(chunk);
        paragrafo.setAlignment(Element.ALIGN_CENTER);
        paragrafo.setSpacingAfter(10);
        document.add(paragrafo);

        //informacoes
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 12));
        paragrafo.setSpacingAfter(20);
        chunk = new Chunk("Curso: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagiario.getCurso().getNome());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\nModalidade de estágio: ");
        paragrafo.add(chunk);
        if (estagio.isIsObrigatorio()) {
            chunk = new Chunk("Obrigatório");
        } else {
            chunk = new Chunk("Não-obrigatório");
        }
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        document.add(paragrafo);

        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 12));
        paragrafo.setSpacingAfter(20);
        chunk = new Chunk("Estagiário: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagiario.getNome());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("\nProfessor Orientador: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getOrientador().getNome());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("\nEmpresa: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getConcedente().getNome());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("\nSupervisor: ");
        paragrafo.add(chunk);
        chunk = new Chunk(estagio.getSupervisor().getNome());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("\nPeríodo: ");
        paragrafo.add(chunk);
        chunk = new Chunk(relatorioAtividades.getPeriodoFim().toString());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk(" a ");
        paragrafo.add(chunk);
        chunk = new Chunk(relatorioAtividades.getPeriodoFim().toString());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("\nCarga Horária Acumulada: ");
        paragrafo.add(chunk);
        chunk = new Chunk(String.valueOf(relatorioAtividades.getCargaHorariaAcumulada()));
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("\nBolsa ou outra forma de contraprestação: ");
        paragrafo.add(chunk);
        if (estagio.getValorAuxilioTransporte() + estagio.getValorBolsa() > 0) {
            chunk = new Chunk("Sim");
        } else {
            chunk = new Chunk("Não");
        }
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        document.add(paragrafo);


        //relatorio
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 12));
        paragrafo.setSpacingAfter(20);
        paragrafo.setAlignment(Element.ALIGN_JUSTIFIED);

        chunk = new Chunk("01)  Mencione as atividades desenvolvidas neste período.\n");
        chunk.setFont(FontFactory.getFont(FontFactory.TIMES_BOLD, 12));
        paragrafo.add(chunk);
        chunk = new Chunk(relatorioAtividades.getAtividadesDesenvolvidas());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n\n02)  A empresa onde você estagia tem um \"Programa de Estágio\"? Em caso afirmativo, indique as atividades desenvolvidas por você que não estavam incluídas no programa.\n");
        chunk.setFont(FontFactory.getFont(FontFactory.TIMES_BOLD, 12));
        paragrafo.add(chunk);
        if (relatorioAtividades.getProgramaEstagio() == 0) {
            chunk = new Chunk("Sim. " + relatorioAtividades.getAtividadesNaoIncluidasProgramaEstagio());
        } else if (relatorioAtividades.getProgramaEstagio() == 1) {
            chunk = new Chunk("Não.");
        } else if (relatorioAtividades.getProgramaEstagio() == 2) {
            chunk = new Chunk("Desconheço.");
        }
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n\n03)  Indique as tarefas que desempenhou que a seu ver não contribuíram para sua formação profissional.\n");
        chunk.setFont(FontFactory.getFont(FontFactory.TIMES_BOLD, 12));
        paragrafo.add(chunk);
        chunk = new Chunk(relatorioAtividades.getTarefasNaoContribuiram());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n\n04)  Indique alguns tipos de atividades que você não realizou e que considera indispensável à sua formação profissional.\n");
        chunk.setFont(FontFactory.getFont(FontFactory.TIMES_BOLD, 12));
        paragrafo.add(chunk);
        chunk = new Chunk(relatorioAtividades.getTarefasIndispensaveisNaoFeitas());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n\n05)  O estágio proporcionou contato com situações variadas da realidade de trabalho profissional de sua área?\n");
        chunk.setFont(FontFactory.getFont(FontFactory.TIMES_BOLD, 12));
        paragrafo.add(chunk);

        if (relatorioAtividades.getRealidadeTrabalho() == 0) {
            chunk = new Chunk("Sim.");
        } else if (relatorioAtividades.getRealidadeTrabalho() == 1) {
            chunk = new Chunk("Não.");
        } else if (relatorioAtividades.getRealidadeTrabalho() == 2) {
            chunk = new Chunk("Não observei.");
        }
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n\n06)  Você teve oportunidade, durante o estágio, de colocar em prática os conhecimentos teóricos adquiridos durante o curso?\n");
        chunk.setFont(FontFactory.getFont(FontFactory.TIMES_BOLD, 12));
        paragrafo.add(chunk);

        if (relatorioAtividades.getConhecimentosTeoricos() == 0) {
            chunk = new Chunk("Sim.");
        } else if (relatorioAtividades.getConhecimentosTeoricos() == 1) {
            chunk = new Chunk("Não.");
        } else if (relatorioAtividades.getConhecimentosTeoricos() == 2) {
            chunk = new Chunk("Não observei.");
        }
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n\n07)  No início do estágio houve algum tipo de ambientação com as demais pessoas do grupo?\n");
        chunk.setFont(FontFactory.getFont(FontFactory.TIMES_BOLD, 12));
        paragrafo.add(chunk);
        if (relatorioAtividades.isAmbientacaoPessoas()) {
            chunk = new Chunk("Sim.");
        } else if (!relatorioAtividades.isAmbientacaoPessoas()) {
            chunk = new Chunk("Não.");
        }
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n\n08)  Na empresa onde realizou estágio havia alguém em especial que o orientou e o acompanhou no desenvolvimento de suas tarefas? Em caso afirmativo, qual foi este profissional?\n");
        chunk.setFont(FontFactory.getFont(FontFactory.TIMES_BOLD, 12));
        paragrafo.add(chunk);
        if (relatorioAtividades.isTemOrientadorTarefas() == true) {
            chunk = new Chunk("Sim. " + relatorioAtividades.getOrientadorTarefas());
        } else if (!relatorioAtividades.isTemOrientadorTarefas()) {
            chunk = new Chunk("Não.");
        }
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n\n09)  Você recebia informações claras sobre o desempenho de suas tarefas? Em caso afirmativo, essas informações lhe eram dadas com que frequência?\n");
        chunk.setFont(FontFactory.getFont(FontFactory.TIMES_BOLD, 12));
        paragrafo.add(chunk);
        if (relatorioAtividades.isInformacoesClaras()) {
            if (relatorioAtividades.isInformacoesDadas()) {
                chunk = new Chunk("Sim. Continuamente.");
            } else if (!relatorioAtividades.isInformacoesDadas()) {
                chunk = new Chunk("Sim. Esporadicamente.");
            }
        } else if (!relatorioAtividades.isInformacoesClaras()) {
            chunk = new Chunk("Não.");
        }
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n\n10)  Quando encontrava dificuldades na realização de suas tarefas, a quem recorria?\n");
        chunk.setFont(FontFactory.getFont(FontFactory.TIMES_BOLD, 12));
        paragrafo.add(chunk);
        chunk = new Chunk(relatorioAtividades.getaQuemRecorria());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n\n11)  O estágio lhe permitiu sentir suas deficiências e procurar aprimoramento?\n");
        chunk.setFont(FontFactory.getFont(FontFactory.TIMES_BOLD, 12));
        paragrafo.add(chunk);
        if (relatorioAtividades.getSentirDeficiencias() == 0) {
            chunk = new Chunk("Sempre.");
        } else if (relatorioAtividades.getSentirDeficiencias() == 1) {
            chunk = new Chunk("Nunca.");
        } else if (relatorioAtividades.getSentirDeficiencias() == 2) {
            chunk = new Chunk("Às vezes.");
        }
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n\n12)  Indique as dificuldades que teve em relação ao desempenho de suas tarefas.\n");
        chunk.setFont(FontFactory.getFont(FontFactory.TIMES_BOLD, 12));
        paragrafo.add(chunk);
        chunk = new Chunk(relatorioAtividades.getDificuldades());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n\n13)  Houve, em seu estágio, possibilidade de troca de experiência com outros profissionais?\n");
        chunk.setFont(FontFactory.getFont(FontFactory.TIMES_BOLD, 12));
        paragrafo.add(chunk);
        if (relatorioAtividades.isTrocaExperiencia()) {
            chunk = new Chunk("Sim.");
        } else if (!relatorioAtividades.isTrocaExperiencia()) {
            chunk = new Chunk("Não.");
        }
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n\n14)  Você teve possibilidade de procurar soluções próprias para os problemas que surgiram durante o desempenho de suas tarefas de estágio?\n");
        chunk.setFont(FontFactory.getFont(FontFactory.TIMES_BOLD, 12));
        paragrafo.add(chunk);
        if (relatorioAtividades.getSolucoesProprias() == 0) {
            chunk = new Chunk("Sempre.");
        } else if (relatorioAtividades.getSolucoesProprias() == 1) {
            chunk = new Chunk("Nunca.");
        } else if (relatorioAtividades.getSolucoesProprias() == 2) {
            chunk = new Chunk("Às vezes.");
        }
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n\n15)  Você teve oportunidade de realizar trabalhos teóricos (leituras, pesquisas) ou freqüentar palestras na Universidade ou fora dela?\n");
        chunk.setFont(FontFactory.getFont(FontFactory.TIMES_BOLD, 12));
        paragrafo.add(chunk);
        if (relatorioAtividades.isTrabalhosTeoricosPalestras()) {
            chunk = new Chunk("Sim.");
        } else if (!relatorioAtividades.isTrabalhosTeoricosPalestras()) {
            chunk = new Chunk("Não.");
        }
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\n\n16)  Se você quiser fazer alguma observação, utilize as linhas abaixo.\n");
        chunk.setFont(FontFactory.getFont(FontFactory.TIMES_BOLD, 12));
        paragrafo.add(chunk);
        chunk = new Chunk(relatorioAtividades.getOutrasObservacoes());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        document.add(paragrafo);

        //Assinaturas
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 9));
        paragrafo.setAlignment(Element.ALIGN_CENTER);
        chunk = new Chunk("\nLocal: _________________________________      Data: _________________________________\n\n\n");
        paragrafo.add(chunk);


        chunk = new Chunk("                              Estagiário                              ");
        chunk.setUnderline(0.1f, 10f);
        paragrafo.add(chunk);
        chunk = new Chunk("        ");
        paragrafo.add(chunk);
        chunk = new Chunk("                              Supervisor                              ");
        chunk.setUnderline(0.1f, 10f);
        paragrafo.add(chunk);

        document.add(paragrafo);


        document.close();
        return true;
    }

    @Override
    public List<Estagio> listarEstagiosPorOrientador(Long idOrientador) {
        List<Estagio> estagios = estagioBean.findPorOrientador(idOrientador);
        return estagios;
    }

    @Override
    public List<Estagio> listarEstagiosEsperandoAprovacao(String loginOrientador) {
        Orientador orientador = orientadorBean.findLogin(loginOrientador);
        List<Estagio> estagios = estagioBean.findEsperandoAprovacaoPorOrientador(orientador.getId());
        return estagios;
    }

    @Override
    public boolean updateStatusEstagio(Long idEstagio, String novoStatus) {
        Estagio estagio = estagioBean.find(idEstagio);
        estagio.setStatus(novoStatus);
        estagioBean.edit(estagio);
        return true;
    }

    @Override
    public boolean aprovarEstagio(Long idEstagio, String status) {
        Date dataAprovacao = Calendar.getInstance().getTime();
        Estagio estagio = estagioBean.find(idEstagio);
        estagio.setStatus(status);
        estagio.setDataAprovacao(dataAprovacao);
        estagioBean.edit(estagio);
        return true;
    }

    public List<Alerta> listarAlertas() {
        List<Alerta> alertas = alertaBean.listAlertas();
        Calendar calendar = Calendar.getInstance();
        for (Alerta alerta : alertas) {
            if (alerta.getDataAlerta().before(calendar.getTime())) {
                alertaBean.remove(alerta);
            }
        }
        return alertas;
    }

    @Override
    public boolean verificarDadosEstagio(Estagio estagio) {
        if (estagio.getArea() == null) {
            return false;
        }
        if (estagio.getCargaHorariaDiaria() == 0) {
            return false;
        }
        if (estagio.getCargaHorariaSemanal() == 0) {
            return false;
        }
        if (estagio.getCargaHorariaTotalPrevista() == 0) {
            return false;
        }
        if (estagio.getConcedente() == null) {
            return false;
        }
        if (estagio.getCronograma() == null) {
            return false;
        }
        if (estagio.getEmpresaApoliceSeguro() == null) {
            return false;
        }
        if (estagio.getHorarioEstagio() == null) {
            return false;
        }
        if (estagio.getInicioPrevisto() == null) {
            return false;
        }
        if (estagio.getTerminoPrevisto() == null) {
            return false;
        }
        if (estagio.getJustificativa() == null) {
            return false;
        }
        if (estagio.getMetodologia() == null) {
            return false;
        }
        if (estagio.getObjetivo() == null) {
            return false;
        }
        if (estagio.getOrientador() == null) {
            return false;
        }
        if (estagio.getSupervisor() == null) {
            return false;
        }
        if (estagio.getTema() == null) {
            return false;
        }
        if (estagio.getnApoliceSeguro() == null) {
            return false;
        }
        return true;
    }

    @Override
    public void novaFichaFrequencia(String loginEstagiario, String referenteAoMes, String tabela) {
        Estagiario estagiario = estagiarioBean.findLogin(loginEstagiario);
        Estagio estagio = estagiario.getEstagio();
        FichaFrequencia fichaFrequencia = new FichaFrequencia(referenteAoMes, tabela, estagio);
        fichaFrequenciaBean.create(fichaFrequencia);
    }

    @Override
    public List<FichaFrequencia> buscarFichaFrequencia(Long idEstagio) {
        List<FichaFrequencia> fichaFrequencia = fichaFrequenciaBean.findEstagio(idEstagio);
        return fichaFrequencia;
    }

    @Override
    public boolean gerarFichaFrequencia(FichaFrequencia fichaFrequencia) throws DocumentException, FileNotFoundException {
        //Instanciação do Objeto do Documento        
        Document document = new Document(PageSize.A4, 50, 50, 50, 50);
        //Criação de Objeto PdfWriter
        PdfWriter writer;
        writer = PdfWriter.getInstance(document, new FileOutputStream(caminho + "FichaFrequencia.pdf"));
        document.open();

        //Cabecalho
        Paragraph paragrafo;
        paragrafo = new Paragraph("FICHA DE FREQUÊNCIA DE ESTÁGIO", FontFactory.getFont(FontFactory.TIMES_ROMAN, 18, Font.BOLD));

        paragrafo.setAlignment(Element.ALIGN_CENTER);
        paragrafo.setSpacingAfter(2);
        document.add(paragrafo);

        Chunk chunk = new Chunk("                                                                                                                                            ");
        chunk.setUnderline(0.1f, 0f);
        chunk.setUnderline(0.1f, 2f);
        paragrafo = new Paragraph(chunk);
        paragrafo.setAlignment(Element.ALIGN_CENTER);
        paragrafo.setSpacingAfter(10);
        document.add(paragrafo);

        //informacoes
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 12));
        paragrafo.setSpacingAfter(20);
        chunk = new Chunk("Curso: ");
        paragrafo.add(chunk);
        chunk = new Chunk(fichaFrequencia.getEstagio().getEstagiario().getCurso().getNome());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        chunk = new Chunk("\nModalidade de estágio: ");
        paragrafo.add(chunk);
        if (fichaFrequencia.getEstagio().isIsObrigatorio()) {
            chunk = new Chunk("Obrigatório");
        } else {
            chunk = new Chunk("Não-obrigatório");
        }
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);

        document.add(paragrafo);

        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 12));
        paragrafo.setSpacingAfter(20);
        chunk = new Chunk("Estagiário: ");
        paragrafo.add(chunk);
        chunk = new Chunk(fichaFrequencia.getEstagio().getEstagiario().getNome());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("\nEmpresa: ");
        paragrafo.add(chunk);
        chunk = new Chunk(fichaFrequencia.getEstagio().getConcedente().getNome());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("\nSupervisor: ");
        paragrafo.add(chunk);
        chunk = new Chunk(fichaFrequencia.getEstagio().getSupervisor().getNome());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        chunk = new Chunk("\nReferente ao mês: ");
        paragrafo.add(chunk);
        chunk = new Chunk(fichaFrequencia.getReferenteAoMes());
        chunk.setUnderline(0.1f, -2f);
        paragrafo.add(chunk);
        document.add(paragrafo);

        //tabela
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 12));
        paragrafo.setSpacingAfter(40);

        PdfPTable tabela = new PdfPTable(new float[]{1.2f, 0.8f, 1.0f, 6.0f});
        tabela.setWidthPercentage(100.0f);
        PdfPCell celula = new PdfPCell();
        celula.setPhrase(new Phrase("Data", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        celula.setRowspan(2);
        celula.setBackgroundColor(BaseColor.LIGHT_GRAY);
        celula.setHorizontalAlignment(Element.ALIGN_CENTER);
        tabela.addCell(celula);
        celula.setPhrase(new Phrase("Horário de Trabalho", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        celula.setRowspan(1);
        celula.setColspan(2);
        tabela.addCell(celula);
        celula.setPhrase(new Phrase("Atividades", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        celula.setColspan(1);
        celula.setRowspan(2);
        tabela.addCell(celula);
        celula.setPhrase(new Phrase("Início", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        celula.setRowspan(1);
        tabela.addCell(celula);
        celula.setPhrase(new Phrase("Término", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        tabela.addCell(celula);

        StringTokenizer st = new StringTokenizer(fichaFrequencia.getTabela(), "@");
        int i = 0, cargaHorariaMensal = 0, inicio = 0;
        String string;
        while (st.hasMoreTokens()) {
            string = st.nextToken();
            if (i % 4 == 1) {
                inicio = Integer.parseInt(string);
                tabela.addCell(string + "h");
            } else if (i % 4 == 2) {
                cargaHorariaMensal += Integer.parseInt(string) - inicio;
                tabela.addCell(string + "h");
            } else {
                tabela.addCell(string);
            }
            i++;
        }
        celula.setColspan(3);
        celula.setPhrase(new Phrase("Carga Horária Mensal", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        tabela.addCell(celula);
        celula.setBackgroundColor(BaseColor.WHITE);
        celula.setPhrase(new Phrase(String.valueOf(cargaHorariaMensal) + "h", FontFactory.getFont(FontFactory.TIMES_BOLD, 12)));
        tabela.addCell(celula);
        paragrafo.add(tabela);
        document.add(paragrafo);

        //assinaturas
        paragrafo = new Paragraph(null, FontFactory.getFont(FontFactory.TIMES_ROMAN, 9));
        paragrafo.setAlignment(Element.ALIGN_CENTER);

        chunk = new Chunk("                              Estagiário                              ");
        chunk.setUnderline(0.1f, 10f);
        paragrafo.add(chunk);
        chunk = new Chunk("                        ");
        paragrafo.add(chunk);
        chunk = new Chunk("                              Supervisor                              ");
        chunk.setUnderline(0.1f, 10f);
        paragrafo.add(chunk);

        document.add(paragrafo);

        document.close();
        return true;
    }

    @Override
    public boolean gerarCertificado(String nomeEstagiario, String curso, int horarioTotal, String periodoInicio, String periodoFim, String nomeEmpresa, String nomeOrientador, String nomeSupervisor) throws FileNotFoundException, IOException, DocumentException {
        PdfReader reader = new PdfReader(new FileInputStream(caminho + "certificado.pdf"));
        PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(caminho + "certificado " + nomeEstagiario + ".pdf"));
        PdfContentByte canvas = stamper.getOverContent(1);
        Rectangle pagina = reader.getPageSize(1);

        Phrase frase = new Phrase("", FontFactory.getFont(FontFactory.TIMES, 14));
        Chunk chunk = new Chunk("Certificamos que ");
        frase.add(chunk);
        chunk = new Chunk(nomeEstagiario);
        chunk.setFont(FontFactory.getFont(FontFactory.TIMES_BOLD, 15));
        frase.add(chunk);
        chunk = new Chunk(", do curso de " + curso);
        frase.add(chunk);
        ColumnText.showTextAligned(canvas, Element.ALIGN_CENTER, frase, pagina.getWidth() / 2 + 65, pagina.getHeight() / 2, 270);

        frase = new Phrase("", FontFactory.getFont(FontFactory.TIMES, 14));
        chunk = new Chunk(" da Faculdade de Computação da Universidade Federal de Mato Grosso do Sul,");
        frase.add(chunk);
        ColumnText.showTextAligned(canvas, Element.ALIGN_CENTER, frase, pagina.getWidth() / 2 + 35, pagina.getHeight() / 2, 270);

        frase = new Phrase("", FontFactory.getFont(FontFactory.TIMES, 14));
        chunk = new Chunk("cumpriu " + horarioTotal + " horas de estágio no período de " + periodoInicio + " a " + periodoFim + ",");
        frase.add(chunk);
        ColumnText.showTextAligned(canvas, Element.ALIGN_CENTER, frase, pagina.getWidth() / 2 + 5, pagina.getHeight() / 2, 270);

        frase = new Phrase("", FontFactory.getFont(FontFactory.TIMES, 14));
        chunk = new Chunk("na empresa " + nomeEmpresa + ".");
        frase.add(chunk);
        ColumnText.showTextAligned(canvas, Element.ALIGN_CENTER, frase, pagina.getWidth() / 2 - 25, pagina.getHeight() / 2, 270);

        frase = new Phrase("", FontFactory.getFont(FontFactory.TIMES, 14));
        chunk = new Chunk(".      " + nomeOrientador + " - Orientador(a)" + "      .");
        chunk.setUnderline(0.1f, 12f);
        frase.add(chunk);
        chunk = new Chunk("                                        ");
        frase.add(chunk);
        chunk = new Chunk(".      " + nomeSupervisor + " - Supervisor(a)" + "      .");
        chunk.setUnderline(0.1f, 12f);
        frase.add(chunk);
        ColumnText.showTextAligned(canvas, Element.ALIGN_CENTER, frase, pagina.getWidth() / 2 - 115, pagina.getHeight() / 2, 270);

        stamper.close();
        return true;
    }

    @Override
    public int contarEstagiosEmEspera(String loginOrientador) {
        Orientador orientador = orientadorBean.findLogin(loginOrientador);
        return estagioBean.contarEstagiosEmEspera(orientador.getId());
    }

    public String alterarSenha(String login, String senhaAntiga, String senhaNova, String confirmarSenhaNova) {
        Estagiario estagiario = estagiarioBean.findLogin(login);
        if (senhaAntiga.equals(estagiario.getSenha())) {
            if (senhaNova.equals(confirmarSenhaNova)) {
                estagiario.setSenha(senhaNova);
            } else {
                return "confirmacaoIncorreta";
            }
        } else {
            return "senhaIncorreta";
        }
        return "alterado";
    }

    private static String textMessage() {
        return "Leia o novo tutorial JavaMail do Programando com Java.\n"
                + "Saiba como enviar emails com anexo, em formato texto e html.\n"
                + "Envie seu email para mais de um destinatario.";
    }

    private static String htmlMessage() {
        return "<html>\n"
                + "\t<head>\n"
                + "\t\t<title>Email no formato HTML com Javamail!</title> \n"
                + "\t</head>\n"
                + "\t<body>\n"
                + "\t\t<div style='background-color:orange; width:28%; height:100px;'>\n"
                + "\t\t\t<ul>\n"
                + "\t\t\t\t<li>Leia o novo tutorial JavaMail do Programando com Java.</li>\n"
                + "\t\t\t\t<li>Aprenda como enviar emails com anexos.</li>\n"
                + " \t\t\t\t<li>Aprenda a enviar emails em formato texto simples ou html.</li> \n"
                + "\t\t\t\t<li>Aprenda como enviar seu email para mais de um destinátario.</li>\n"
                + "\t\t\t</ul>\n"
                + "\t\t\t<p>Visite o blog \n"
                + "\t\t\t\t<a href='http://mballem.wordpress.com/'>Programando com Java</a>\n"
                + "\t\t\t</p>\n"
                + "\t\t</div>\t\n"
                + "\t\t<div style='width:28%; height:50px;' align='center'>\n"
                + "\t\t\tDownload do JavaMail<br/>\n"
                + "\t\t\t<a href='http://www.oracle.com/technetwork/java/javaee/index-138643.html'>\n"
                + "\t\t\t\t<img src='http://www.oracleimg.com/admin/images/ocom/hp/oralogo_small.gif'/>\n"
                + "\t\t\t</a> \n"
                + "\t\t</div>\t\t\n"
                + "\t</body> \n"
                + "</html>";
    }

    public MailJava iniciarMailJava(String subjectMail, String bodyMail, Map<String, String> toMailsUsers) {
        MailJava mj;
        mj = new MailJava(null, null, null, null, null, null, null, subjectMail, bodyMail, toMailsUsers, null, null, null);
        //configuracoes de envio
        mj.setSmtpHostMail("smtp.live.com");
        mj.setSmtpPortMail("25");
        mj.setSmtpAuth("true");
        mj.setSmtpStarttls("true");
        mj.setUserMail("sigef@hotmail.com");
        mj.setFromNameMail("Sigef");
        mj.setPassMail("facomufms1");
        mj.setCharsetMail("ISO-8859-1");
        mj.setTypeTextMail(MailJava.TYPE_TEXT_HTML);

        //sete quantos destinatarios desejar
//        Map<String, String> map = new HashMap<>();
//        map.put("opedrosiqueira@gmail.com", "Pedro Gmail");
//        map.put("opedrohenriquesiqueira@yahoo.com.br", "Pedro Yahoomail");

//        mj.setToMailsUsers(map);

        //seta quatos anexos desejar
//        List<String> files = new ArrayList<>();
//        files.add("C:\\Users\\pedro\\Pictures\\18jan15-freaky-paciifier1.jpg");
//        files.add("C:\\Users\\pedro\\Pictures\\gatinho-feio.jpg");
//        files.add("C:\\Users\\pedro\\Pictures\\mybuddie1.jpg");
//
//        mj.setFileMails(files);
        return mj;
    }

    public void startTimer() {
        if (servicoEnviarEmail) {
            ctx.getTimerService().createTimer(20000, duracaoIntervalo * 1000, null);
            System.out.println("Timers set");
        }
    }

    public String checkStatus() {
        Timer timer = null;
        Collection timers = ctx.getTimerService().getTimers();
        Iterator iter = timers.iterator();
        while (iter.hasNext()) {
            timer = (Timer) iter.next();

            return ("Timer will expire after " + timer.getTimeRemaining() + " milliseconds.");
        }
        return ("No timer found");

    }

    @Timeout
    public void handleTimeout(Timer timer) throws UnsupportedEncodingException, MessagingException {
        System.out.println("HandleTimeout called.\nEnviando os lembretes para os estagiários...");

        List<Estagiario> estagiarios = estagiarioBean.findTodosEstagiarios();
        Map<String, String> map = new HashMap<>();
        if (estagiarios != null) {
            for (int index = 0; index < estagiarios.size(); index++) {
                map.put(estagiarios.get(index).getEmail(), estagiarios.get(index).getNome());
            }
        }

        List<Alerta> alertas = alertaBean.listAlertas();
        Date d = new Date();
        String formato = "dd/MM/yyyy";
        SimpleDateFormat formatter = new SimpleDateFormat(formato);
        Calendar diaAtual = new GregorianCalendar();
        diaAtual.setTime(d);
        if (alertas != null) {
            for (int index = 0; index < alertas.size(); index++) {
                Calendar diaAlerta = new GregorianCalendar();
                diaAlerta.setTime(alertas.get(index).getDataAlerta());
                diaAlerta.add(Calendar.DAY_OF_MONTH, -3);
                if (diaAlerta.get(Calendar.DAY_OF_MONTH) == diaAtual.get(Calendar.DAY_OF_MONTH) && diaAlerta.get(Calendar.MONTH) == diaAtual.get(Calendar.MONTH) && diaAlerta.get(Calendar.YEAR) == diaAtual.get(Calendar.YEAR)) {
                    diaAlerta.add(Calendar.DAY_OF_MONTH, 3);
                    String assunto = "Sigef - Lembrete";
                    String conteudo = "<h1>Lembrete do Estágio</h1><p>Data: " + formatter.format(diaAlerta.getTime()) + "</p><p>Descrição: " + alertas.get(index).getDescricao() + "</p>";
                    MailJava mj = iniciarMailJava(assunto, conteudo, map);
                    MailJavaSender mjs = new MailJavaSender();
                    mjs.senderMail(mj);
                    System.out.println("Email Enviado.");
                }
            }
        }
    }
}
